Virtual machines are software implementations of physical machines. Virtual machines are often used so that the resources of a single physical computer can be shared among many virtual computers. Each virtual machine may include virtual hardware resources, such as virtual disks, virtual processing resources, and virtual network interface cards. When multiple virtual machines share the same physical Ethernet port, this is referred to as virtual Ethernet port aggregation or VEPA. VEPA has been standardized as IEEE 802.1Qbg—Edge Virtual Bridging, Draft 2.2, 28 Mar. 2012 (hereinafter, “EVB Standard”), the disclosure of which is incorporated herein by reference in its entirety. According to the EVB Standard, an edge relay (ER) is virtual layer 2 switch used by multiple virtual machines to share the same physical Ethernet port. An edge relay can operate in VEPA mode or virtual Ethernet bridging (VEB) mode. Each virtual machine includes a virtual station interface (VSI) that connects the virtual machine to an ER. If a VM connected to an ER operating in VEPA mode desires to send packets to another VM connected to the same ER, the EVB Standard requires that the packet be sent out of the physical Ethernet port, to an adjacent bridge, and back to the VM via the ER. The adjacent bridge is required to build VEPA forwarding tables so that packets will be transmitted correctly between VMs. If the ER is operating in VEB mode, packets can be sent between VSIs connected to the same ER without requiring that the packets be sent to the adjacent bridge.
It is desirable to test the functionality of Ethernet bridges that implement VEPA. One aspect of testing the functionality of VEPA Ethernet bridges is testing the Ethernet bridges' implementation of the VDP protocol. The VDP protocol is used to discover and configure a VSI instance. It has been determined that in some instances, the VEPA Ethernet bridge sends unexpected packets to ERs. These unexpected packets can cause the state machines of the VSIs to crash or enter unexpected states. For example, when a user instructs a VEPA Ethernet bridge to clear all existing sessions, the bridge may initiate transmission of de-associate messages for all sessions. Transmission of some of the de-associate messages may be delayed due to finite resources of the bridge or buffering mechanisms. While waiting to transmit a de-associate message for a session, the bridge may receive a keep-alive message for the same session from one of the VSIs. The bridge may incorrectly interpret the keep-alive message as a message for a new session and may send subsequent messages for the session that the bridge incorrectly interprets as a new session to the VSI. The VSI may subsequently receive the de-associate message, clear the session, and place the session in a retry queue to wait behind other sessions and attempt reestablishment of the session. While waiting to retry establishment of the session, the VSI does not expect to receive new session messages from the bridge. Receipt of such messages while waiting to retry the session causes the station, i.e., the VSI, to enter an indeterminate state.
Accordingly, there exists a need for methods, systems, and computer readable media for handling unexpected VDP packets received by a VSI.